home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
071-080
/
amok73
/
ums
/
doc
/
ums-cfg.doc
< prev
next >
Wrap
Text File
|
1993-11-04
|
11KB
|
340 lines
UMS Message Format $VER: 9.1 (16.7.92)
This text is (C) 1992 by Martin Horneffer.
It may freely be copied and distributed, as long the the
text is unchanged and this copyright notice is left intact.
The Universal Message System universal configuration
The UMS Message Base Processor (referred to as 'MBP') parses
a global configuration file and provides possibility for all
related programs to get their configuration from this file
(through ums.library).
This file usually is named "ENVARC:ums.config" on an Amiga.
The resulting data structures are called the "UMS
configuration"
I) Configuration Objects
The UMS configuration contains several objects. There are
four main types of objects: akas, netgroups, strings and
users.
1) AKAs
AKAs simply are a list of strings, where each string
describes one net-address the local system is known as.
AKAs are necessary to detect whether an incoming message has
reached its destination, or whether it still has to be
routed to another system.
An AKA in the config-file is defined by a line of the
following form:
"AKA" <address>
Examples:
aka Martin_Horneffer@mowgli.fido.de
AKA 2:242/7.9@Fidonet
Any number of such lines may be used. The strings are not
case-sensitive.
2) NETGROUPS
Since more and more networks with different formats are
interconnected by more and more gateways, more and more
newsgroups are available through different networks under
different names. Thus it's necessary to know what different
names all stand for the same newsgroup.
Two groupnames can be declared to be the same netgroup by
using a line of the following format:
"GROUP" <group1> = <group2>
Any number of such lines may be used. Any number of
groupnames may be declared to be identical. If there are
more than two names for the same group, more than one line
will be needed.
Examples:
group net1.a = net2.b
group net3.c = net4.d
group foo.bar = bla.fasel
group net1.a = net4.d
Now "net1.a", "net2.b", "net3.c" and "net4.d" are identical,
but different to "foo.bar" and "bla.fasel".
Again, case is preserved, but not used for comparisons.
3) STRINGS
An UMS 'config-string' is a null-terminated string,
identified by an unique name.
They provide the most flexible possibility to provide custom
configuration information. Every UMS-related program should
get its configuration from strings in the UMS configuration.
There is no restriction to the contents of the string,
except that it needs to be null-terminated.
The names of strings are case-insensitive. In order to
distinguish strings for different UMS applications and avoid
collision of names, every name must consist of an
application-specific ID followed by a dot and a suitable
name. String-names without a dot are reserved for the MBP
itself.
They are specified like this:
<name> = <string>
If <string> contains any control-chars or has whitespaces at
its beginning or end, it needs to be enclosed in
double-quotes. When it's in double-quotes, control-
characters are escaped with "*" in a style similiar to
AmigaDOS:
"*"" -> "
"**" -> *
"*Xab" -> (0xab)
"*R" -> CR (0x0d)
"*N" -> LF (0x0a)
"*E" -> ESC (0x1b)
(etc..)
Examples:
foo.bar = blas-fasel
Fido.Origin = "Some stupid gag."
Newsreader.Bold = "*e[1m"
4) USERS
Defining users is very essential to the UMS MBP. User
definitions tells the MBP about the users it has to keep
specific data for and the access-rights granted to the
different users, etc.
There are two main types of users: 'real' users and
im-/exporters. Actually, there is also a third type: the
sysop, which is much like a 'real' user but has some
additional access-rights.
A real user or sysop is usually associated with a natural
person who wants to use the MB. An im-/exporter is treated
much the same way, but refers to a link to another message-
processing system, eg a mailbox or a news-server. Thus, a
minimum UMS system consists of at least one sysop, who
maintains the system, reads and writes messages, and one
im-/exporter, which connects the UMS system with the rest of
the world.
A user definition consists of several strings:
NAME -
the (real) name of the user. For im-/exporters preferably
the name of the remote system.
ALIAS -
every user can have a random number of aliases. A user may
always be addressed by its name or one of its aliases.
Thus, no alias of one user may be equal to a name or alias
of any other user within the same system.
SYSOP -
this is a boolean flag that makes a simple user be sysop.
PASSWORD -
a password needed for logins.
PRIORITY -
an integer between -100 and +100. Currently not very
important.
READACCESS -
an AmigaDOS style pattern, that tells the MBP what public
messages a user is allowed to read. A user may read all
public messages that's group matches the user's READACCESS-
pattern.
WRITEACCESS -
a pattern that defines the group a user may write public
messages to. In order to be allowed to write a public
message to the MB, the message's group must match the user's
WRITEACCESS-pattern
NETACCESS -
a pattern that defines what addresses a user may write
private messages to. The ToPath-field of the message must
match this pattern.
EXPORT -
when this is specified, the user will be an im-/exporter and
no 'real' user or sysop. The EXPORT-pattern says which
private messages are exported by an exporter. All messages
that's ToPath matches an exporter's EXPORT-pattern may be
exported by that exporter. An exporter must inspect all the
private messages it can read and tell the MBP, whether they
actually could be exported or not.
IMPORT -
a pattern a message's FromPath must match to in order to
allow the message to be written to the MB.
DISTRIBUTION -
only for exporters. When a message (public or private) has
a distribution-field, it must match the exporters
DISTRIBUTION-pattern in order to be readable to that
exporter.
The definition of an user in the UMS configuration file is
started with the single keyword "user" in a line and
completed with the single "enduser".
Every user may have 'local' strings. These are exactly like
the global config-strings and defined in the same way,
except that they need to be between "user" and "enduser"
lines. Local config-strings with the same name as global
config-strings usually supersede the global ones.
Special strings for the user-definition are defined similiar
to string-definitions, except of 'SYSOP' having no value and
'ALIAS', which may occur as often as desired.
Examples:
user
name = "Martin Horneffer"
password = secret
readaccess = #?
writeaccess = #?
netaccess = #?
sysop
alias = SYSOP
alias = Martin_Horneffer
alias = "Sysop Martin Horneffer"
alias = mh
alias = maho
enduser
user
name = "Test User"
password = guest
readaccess = fido.#?
writeaccess = "~(#?sysop#?)
netaccess = "#?@Fidonet"
alias = test
alias = guest
enduser
user
name = FidoBoss
readaccess = fidonet.#?
priority = -20
writeaccess = #?
import = #?
export = "#?(@Fidonet|.de|.ca|.ch|.at|.org|.com|.edu|.mil)"
distribution = "(%|#?,)(mowgli|fidonet|world)(,#?|%)"
enduser
II) Special config strings
The MBP itself needs some global config strings for its
configuration. They differ from custom config strings by
not having a dot (".") in their name.
DOMAIN-ADDRESS -
this must be a unique domain-style address, which is used
for creation of message IDs. The MBP creates message-IDs by
using a serial decimal number and appending an "at-sign"
("@") in front of the domain-address.
MBPATH -
pathname of the directory where the MBP should create the
message base. Should end with ":" or "/".
LOGFILE -
name of the logfile, where the MBP will report actions and
errors to. UMS applications may (and should) also use this
logfile (via ums.library). The user should read this
logfile regularly in order to detect all possible errors.
LOGLEVEL -
an number from 1 to 9 that indicates how many entries should
be written to the logfile. Sould be at least 5, recommended
is 6 or 7.
HEADERFIELDS -
a list of numbers, separated by commas. Indicates what
text-fields of an UMS message are considered
"header"-fields. These fields are stored in the header-file
instead of the text-file and thus can be read or scanned
faster. Also only header-fields fields can have indices.
Recommended is "1,2,3,4,5,6,7,8,9,10,11,13,14,16,17".
INDEXFIELDS -
a list of numbers, like HEADERFIELDS. Indicates what fields
the MBP should keep an index on. Every index requires
additional space, both on storage as well as on memory but
allows some actions (selecting, searching messages) that
otherwise are not possible with that fields. Recommended is
"1,3,5,8,9,10".
FLUSHINTERVAL -
the MBP updates the message base every time an user logs out
and after a given time. FLUSHINTERVAL specifies this time
in seconds.
HDRFILL -
TXTFILL -
in some special cases it is necessary for the MBP to change
existing message. In order to allow the changed message to
be larger than the old one, some bytes need to be reserved
at creation of the message. HDRFILL and TXTFILL specify the
number of bytes that are to be reserved in the header- and
text-file. The recommended value is "80".
HDRWRITEBUF -
TXTWRITEBUF -
size of write-buffers in bytes. The larger the buffer, the
fewer writes must be done to the storage. Large write
buffers make large imports faster.
HDRREADBUF -
TXTREADBUF -
size of read-buffers in bytes. The values for best overall
performance mainly depend on the ratio seek/transfer-speed.
If you have enough memory you could consider making
HDRREADBUF as large as maximum size of the header-file.
CLEANBUF -
size of the buffer to be used on cleanup of the
messagebase.
For examples see the example configuration file.